// [\u4e00-\u9fa5] 中文验证规则
import wxValidate from 'wechat-validate'
Page({
  data: {
    mobile: '',
    name: '',
    gender: 1,
    idcardFrontUrl: '',
    idcardBackUrl: '',
  },
  behaviors: [wxValidate],
  rules: {
    name: [
      {
        required: true,
        message: '请输入姓名',
      },
      {
        pattern: /^(?:[\u4e00-\u9fa5·]{2,16})$/,
        message: '请输入中文',
      },
    ],
    mobile: [
      {
        required: true,
        message: '请输入手机号',
      },
      {
        pattern: /^1[3-9]\d{9}$/,
        message: '手机号格式错误',
      },
    ],
    idcardFrontUrl: [
      {
        required: true,
        message: '请上传身份证人像面',
      },
    ],
    idcardBackUrl: [
      {
        required: true,
        message: '请上传身份证国徽面',
      },
    ],
  },
  onLoad({ point, building, room, id }) {
    // 如果有房屋项id 就意味着是修改房屋信息
    // 没有则是新增
    // 动态设置navbar的标题
    wx.setNavigationBarTitle({
      title: id ? '修改房屋信息' : '新增房屋信息',
    })
    if (id) return this.updateHouse(id)

    this.setData({
      point,
      building,
      room,
    })
  },

  // 如果有id 就是编辑模式就调用这个函数
  async updateHouse(id) {
    if (!id) return
    // 接口规定如果请求参数中有ID 则是编辑请求 没有则是新增
    // 获取房屋详情
    const { code, data, message } = await wx.http.get('/room/' + id)
    if (code !== 10000) return wx.utils.toast(message)
    // 覆盖data中的数据完成回显
    this.setData(data)
  },

  removePicture(ev) {
    // 移除图片的类型（身份证正面或反面）
    const type = ev.mark.type
    this.setData({
      [type]: '',
    })
  },
  async submitData() {
    if (!this.validate()) return
    // 房屋信息数据去调接口 并且结构出多余的数据
    // eslint-disable-next-line no-unused-vars
    const { __webviewId__, status, ...data } = this.data
    const { code } = await wx.http.post('/room', data)
    // 返回我的房屋列表页面 并且清空多余的页面栈
    console.log(code, '1111')
    // const pages = getCurrentPages()
    wx.navigateBack({ delta: this.data.id ? 2 : 4 })
  },

  // 上传图片
  async uploadImg(e) {
    // console.log(e)
    // 通过事件对象 拿到点击的是上传正面还是反面的剋下
    const type = e.mark.type

    try {
      // 调用内置API 选择文件 拿到选择的文件
      const res = await wx.chooseMedia({
        // 最大选择文件数量
        count: 1,
        // 上传文件类型
        mediaType: ['image'],
        // 是否压缩文件
        sizeType: ['compressed'],
      })

      // 调用uploadFile上传文件到服务器
      wx.uploadFile({
        url: wx.http.baseURL + '/upload',
        filePath: res.tempFiles[0].tempFilePath,
        name: 'file',
        header: {
          Authorization: 'Bearer ' + getApp().token,
        },
        // 上传成功执行的回调函数
        success: (result) => {
          // console.log(result)
          // 转换数据格式
          const data = JSON.parse(result.data)
          if (data.code !== 10000) return wx.utils.toast('上传图片失败')
          // 动态渲染数据 拿到我们点击的正反面数据
          this.setData({
            [type]: data.data.url,
          })
        },
      })
    } catch (error) {
      // 如果没有选择文件会进入catch
      console.log(error)
    }
  },
})
